// 引入model
let articleModel = require('../model/articleModel');

// 引入处理处理时间moment库
let moment = require('moment');

// 将时间设置成中文
moment.locale('zh-cn');
let mditor = require('mditor');


// 新建处理文章的控制器
module.exports = {
    // 处理文章发表的controller函数
    handlePostArticle: (req, res) => {
        let newArticle = req.body;
        // 给传递过来的文章加一个ctime属性
        newArticle.ctime = new Date();
        articleModel.addArticle(newArticle, (err, data) => {
            if (err) return res.json({
                status: 0,
                msg: '数据库操作错误！'
            });
            // 因为前端在成功的时候，需要跳转到文章详情页面，
            // 而这个详情页面必须传递文章的id，所以这里返回时，
            // 传递了一个insertId作为文章id
            res.json({ status: 1, articleId: data.insertId });
        });
    },

    // 展示文章详情页面的controller
    showDetailPage: (req, res) => {
        // 获取路径中的查询参数req.query.xxx
        let articleId = req.query.id;
        articleModel.getDetail(articleId, (err, data) => {
            console.log(err);
            console.log(data);
            if (err) return res.json({
                status: 0,
                msg: '操作数据库失败！'
            });
            // 在返回数据之前，应该先处理一下ctime及content
            data[0].ctime = moment(data[0].ctime).format('MM-DD-YYYY');
            // 将文章的内容从markdown格式转换成html字符串，利用mditor.Parser()
            let parser = new mditor.Parser();
            data[0].content = parser.parse(data[0].content);
            res.render('article/detail', {
                article: data[0],
                isLogin: req.session.isLogin,
                user: req.session.user
            });
        });
    },
    // 显示编辑文章页面的controller
    showEditPage: (req, res) => {
        let id = req.query.id;
        articleModel.queryArticleById(id, (err, data) => {
            if (err) return res.json({
                status: 0,
                msg: '操作数据库失败'
            });
            if (!req.session.isLogin) return
            res.redirect('/');
            res.render('article/edit', {
                article: data[0],
                user: req.session.user
            });
        });
    },

    // 编辑文章的controller
    handleEdit: (req, res) => {
        let article = req.body;
        article.ctime = new Data();
        // 注意post请求中一定不能用
        // req.query.xxx去获取参数。
        console.log(article);
        articleModel.updateArticleById(article, (err, data) => {
            if (err) return res.json({
                status: 0,
                msg: '操作数据库失败'
            });
            // 这里articleId必须传递，
            // 因为前台渲染跳转到详情页时必须要这个文章id
            res.json({
                status: 1,
                articleId: article.id
            });
        })
    }
};